package com.example;

/**
 * Student：类，可以理解为数据的模板，也相当于数据库表
 * student：对象，可以理解为模板的一个实例，也相当于数据库表中的某一条数据
 */
public class Student {
    /* 属性：name、chinese、math */
    /* 属性：可以理解为字段，描述这个类的特征  */
    /* 成员属性、成员变量 */
    /* 属性的命名：参考小驼峰命名，user_age,userAge */
    String name; // 属性的默认值null
    double chinese; // 0.0
    double math; // 0.0

    /*
        每个类原本自带空参的构造方法，
        如果一旦显式的定义了带参构造方法
        必须把空参构造方法也写出来
     */
    /* 构造方法 */
    public Student() {

    }

    /* 构造方法，构造器 */
    /* 返回值类型和方法名都是类型 */
    public Student(String name, double chinese, double math) {
        /* 形参的name赋值给对象的属性name */
        /* this代表当前类的对象 */
        this.name = name;
        this.chinese = chinese;
        this.math = math;
    }

    /* 方法：理解为类的行为 */
    public void zongfen() {
        double zongfen = chinese + math;
        System.out.println(name + "的课程总分是" + zongfen);
    }

    /* 计算平均分 */
    public void pingjunfen() {
        System.out.println(name + "的课程平均分是" + (chinese + math) / 2);
    }

    public String xinxi() {
        return "name:" + name + ", chinese:" + chinese + ", math:" + math;
    }

    /* 打印对象，将显示下列字符串 */
    /* 重写父类方法 */
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", chinese=" + chinese +
                ", math=" + math +
                '}';
    }
}